//typedef struct 
//{
//    int* num;
//    int* src;
//    int numsize;
//} Solution;
//
//Solution* obj = NULL;
//
//Solution* solutionCreate(int* nums, int numsSize) 
//{
//    if (obj != NULL) 
//    {
//        return obj;
//    }
//    Solution* obj = (Solution*)malloc(sizeof(Solution));
//    obj->numsize = numsSize;
//  
//    obj->num = nums;
//    obj->src = (int*)malloc(sizeof(int) * numsSize);
//    for (int i = 0; i < obj->numsize; i++)
//    {
//        obj->src[i] = nums[i];
//    }
//    return obj;
//}
//
//int* solutionReset(Solution* obj, int* retSize)
//{
//
//    *retSize = obj->numsize;
//    return obj->num;
//}
//
//int* solutionShuffle(Solution* obj, int* retSize)
//{
//    *retSize = obj->numsize;
//    for (int i = 0; i < obj->numsize; i++) 
//    {
//        int k = (rand() % obj->numsize);
//        int temp = obj->src[k];
//        obj->src[k] = obj->src[i];
//        obj->src[i] = temp;
//    }
//    return obj->src;
//}
//
//void solutionFree(Solution* obj) 
//{
//    free(obj->num);
//    free(obj->src);
//    free(obj);
//    obj = NULL;
//}





//class MinStack
//{
//public:
//  
//    stack<int> st;
//    stack<int> minStack;
//
//    MinStack() 
//    {
//        while (!st.empty()) 
//        {
//            st.pop();
//        }
//        while (!minStack.empty()) 
//        {
//            minStack.pop();
//        }
//        minStack.push(INT_MAX);
//    }
//
//    void push(int x) 
//    {
//        st.push(x);
//        int minVal = std::min(minStack.top(), x);
//        minStack.push(minVal);
//    }
//
//    void pop() 
//    {
//        st.pop();
//        minStack.pop();
//    }
//
//    int top() 
//    {
//        return st.top();
//    }
//
//    int min() 
//    {
//        return minStack.top();
//    }
//};






//char** fizzBuzz(int n, int* returnSize)
//{
//    char** answer = (char**)malloc(sizeof(char*) * n);
//    for (int i = 1; i <= n; i++)
//    {
//        answer[i - 1] = (char*)malloc(sizeof(char) * 9);
//        if (i % 3 == 0 && i % 5 == 0)
//        {
//            strcpy(answer[i - 1], "FizzBuzz");
//        }
//        else if (i % 3 == 0)
//        {
//            strcpy(answer[i - 1], "Fizz");
//        }
//        else if (i % 5 == 0)
//        {
//            strcpy(answer[i - 1], "Buzz");
//        }
//        else
//        {
//            sprintf(answer[i - 1], "%d", i);
//        }
//    }
//    *returnSize = n;
//    return answer;
//}
